//
//  TRoadLoadingView.h
//  TRoad2
//
//  Created by ZhangYanhua on 15/9/14.
//  Copyright (c) 2015年 Mach. All rights reserved.
//

// 用于首次加载的时候显示的加载视图，区别于下拉刷新的时候
// 下拉刷新的时候，只是头部显示一个刷新视图
// 首次刷新的时候，因为列表中没有内容，如果只是显示头部刷新视图会感觉有点突兀

#import <UIKit/UIKit.h>
#import "QWRoundCornerButton.h"

@class TRoadLoadingView;
@protocol TroadLoadingViewDelegate <NSObject>

- (void)loadingView:(TRoadLoadingView *)loadingView actionButtonPressed:(id)sender;

@end

@interface TRoadLoadingView : UIView

@property (nonatomic, weak) id<TroadLoadingViewDelegate> delegate;

@property (nonatomic, readonly) UIActivityIndicatorView *activityIndicatorView;
@property (nonatomic, readonly) UILabel *activityLabel;

@property (nonatomic, readonly) UIImageView *loadingView;
@property (nonatomic, readonly) UILabel *infoLabel;
@property (nonatomic, readonly) QWRoundCornerButton *actionButton;

- (void)adjustOffsetY:(CGFloat)offsetY;

/**
 *  生成加载视图，并且作为指定view的子视图
 *
 *  @param view           加载视图的父视图
 *  @param actionDelegate 加载视图定位（为nil的时候不能显示actionButton）
 *
 *  @return 生成的加载视图
 */
+ (TRoadLoadingView *)showLoadingViewAddedToView:(UIView *)view
                                  actionDelegate:(id<TroadLoadingViewDelegate>)actionDelegate;

/**
 *  隐藏所有在指定view下面的加载视图
 *
 *  @param view 被隐藏加载视图的父视图
 */
+ (void)hideAllLoadingViewsForView:(UIView *)view;

/**
 *  切换到加载失败视图
 *
 *  @param errorImg      加载失败示意图
 *  @param errorMsg      加载失败错误信息
 *  @param showActionBtn 是否显示重新加载按钮（为YES时要求actionDelegate不为空）
 */
- (void)showLoadingFailedViewWithErrorImage:(UIImage *)errorImg
                                   errorMsg:(NSString *)errorMsg
                           showActionButton:(BOOL)showActionBtn;

/**
 *  切换到加载中视图，和showLoadingFailedViewWithErrorImage对应
 */
- (void)showLoadingView;

/**
 *  隐藏该加载视图
 */
- (void)hideLoadingView;

@end
